Skip to content

feat(desk): a Repo health section on the overview, from the repo-standard conformance snapshot (#81) - #82

Merged
bdelanghe merged 2 commits into
mainfrom
claude/repo-health-dashboard-6n35lv
Sep 5, 2026
Merged

feat(desk): a Repo health section on the overview, from the repo-standard conformance snapshot (#81)#82
bdelanghe merged 2 commits into
mainfrom
claude/repo-health-dashboard-6n35lv

Conversation

@bdelanghe

Copy link
Copy Markdown
Contributor

Closes #81. Epic: bounded-systems/.github-private#912. Feed: bounded-systems/.github#381 (#383, #385).

What this adds

A fourth section on desk.bounded.tools, the same shape as the other three: Repo health — which public repos run the org's standard CI, and whether it passes.

  • selectCi(feed) in src/select.js: refuses any feed not named repo-standard-conformance or without a parseable generated_at; carries the lane's totals through untouched (never re-counts); lists the repos with findings, worst first, each finding code rendered as a sentence (unknown codes pass through as written).
  • A fourth outcome into selectOverview, rendered by the existing overviewSection. Rows are repos, not issues, so row() now omits the number tail when there is none rather than printing null. The section links to the snapshot itself (href) until a ci. host exists.
  • A summary sentence built from the lane's totals: how many repos call the standard, how many are green, how many could not be measured, and the standard's own selftest state. "42 with findings" alone hides the fact that matters.
  • CI_FEED_URL in wrangler.jsonc, read once per overview request beside the other two feeds. Fails closed per section: an unreadable or wrong feed keeps its slot, says why, and the page still serves 5xx.

Verified

  • 357 tests pass (npm test): 14 new across select, worker, render — feed-name and date refusals, worst-first ordering, totals carried verbatim, unknown finding codes, empty snapshot, a section missing from the overview failing closed, the wrong feed served as CI_FEED_URL refused, a missing CI_FEED_URL named, rows without a number.
  • Rendered against the live feeds before commit: status 200, section present, summary reads "49 of 90 public repos call the standard: 49 green, 0 red. 40 do not call it. 3 could not be measured. The standard's own selftest is green."

What it does not do

It does not rank, score, or re-count. Findings are the lane's and gaps are the lane's limits; neither is summed here. It reads no private projection. A ci. host is the next increment, not this one.

Manual items

None. CI_FEED_URL is a var in wrangler.jsonc and ships with the deploy.

🤖 Generated with Claude Code

https://claude.ai/code/session_01CAE3i1NCfwwSVYScKWvEdd


Generated by Claude Code

…dard conformance snapshot (#81)

The desk answers what to pick up, what is spoken for and what is open. It
could not answer which repos run the standard CI, and whether it passes —
the question .github-private#912 asked, and the one #485 filed for the fleet
feed and never started. That answer now exists as a public snapshot,
published daily by bounded-systems/.github's repo-standard-conformance lane.

A fourth section, the same shape as the other three: selectCi refuses any
feed not named repo-standard-conformance or without a parseable
generated_at, carries the lane's totals through untouched, and lists the
repos with findings worst first, each finding as a sentence. The Worker reads
CI_FEED_URL once per overview request beside the other two feeds and fails
closed per section: an unreadable snapshot keeps its slot, says why, and the
page still serves 5xx. The summary line says the denominator out loud — how
many repos call the standard, how many are green, how many could not be
measured — because "42 with findings" alone hides the fact that matters.

Rows are repos, not issues, so row() learned to omit the number tail when
there is none, rather than printing null. No host of its own yet; the section
links to the snapshot. Nothing here ranks, scores, or re-counts.

Rendered against the live feeds before commit: 200, section present.

Closes #81

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CAE3i1NCfwwSVYScKWvEdd
Comment thread test/worker.test.mjs Fixed
…i reads finding copy with hasOwn

CodeQL flagged the bare-URL includes() in worker.test.mjs as incomplete URL
substring sanitization (js/incomplete-url-substring-sanitization, high). The
assertion meant the link target, so it now matches the href attribute, as
the render tests already do — stronger, and no longer a sanitizer shape.

Alongside: a finding code named like an Object.prototype member would have
resolved to a function rather than passing through as text. hasOwn, and a
case that pins it.

Claim-issue: #81

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CAE3i1NCfwwSVYScKWvEdd
@bdelanghe
bdelanghe merged commit d718eba into main Sep 5, 2026
9 checks passed
@bdelanghe
bdelanghe deleted the claude/repo-health-dashboard-6n35lv branch September 5, 2026 00:17
@bounded-systems-front-desk bounded-systems-front-desk Bot moved this from Todo to Done in Front Desk Sep 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

A "Repo health" section on the overview, read from the repo-standard conformance snapshot

3 participants